#include<cairo.h>

int
main(int argc, char* argv[]){
  cairo_surface_t *sfc = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1600, 1000);
  cairo_t * cr = cairo_create(sfc);

  // 虚线各部分长度，10pixel画线、15pixel空白、20pixel画线、25pixel空白、30pixel画线、10pixel空白……
  double dashes[] = {10, 15, 20, 25, 30};

  // 设置画虚线选项
  cairo_set_dash(cr,
    dashes,// 虚线各部分长度，
    5,// dashes数组长度
    100);// 虚线偏移

  // 从x坐标为100处开始的水平虚线
  // 和下面另一条虚线对比来演示虚线偏移机制
  cairo_move_to(cr, 100, 500);
  cairo_line_to(cr, 500, 500);
  cairo_stroke(cr);

  // 从x坐标为0处开始的另一条虚线
  // 用于和上面虚线对比以演示虚线偏移机制。
  cairo_set_dash(cr, dashes, 5, 0);
  cairo_move_to(cr, 0, 505);
  cairo_line_to(cr, 500, 505);
  cairo_stroke(cr);

  // 指定dashes数组长度的第三个参数为0时，会忽略其它参数，画实线
  cairo_set_dash(cr, dashes, 0, 1000);
  cairo_move_to(cr, 0, 510);
  cairo_line_to(cr, 500, 510);
  cairo_stroke(cr);

  cairo_surface_write_to_png(sfc, "g.png");

  return 0;
}//main